<?php

namespace Api\Model;

use Think\Model;

/**
 * 消息模型
 * @author 许诺
 */
class MessageModel extends Model {

    //表名
    protected $tableName = 'tb_data';
    //自动验证
    protected $_validate = array();
    protected $_auto = array();

    //接受消息数据验证及创建
    public function createReceive($data) {
        $this->_validate = array(
            array('mp_id', 'require', 'mp_id(公众号ID)不能为空', self::MUST_VALIDATE),
            array('user_id', 'require', 'user_id(用户ID)不能为空', self::MUST_VALIDATE),
            array('data_content', 'require', 'data_content(消息内容)不能为空', self::MUST_VALIDATE),
            array('info_type', 'require', 'info_type(消息类型)不能为空', self::MUST_VALIDATE),
        );
        $this->_auto = array(
            array('template_id', 0),
            array('data_type', 2),
            array('data_getorput', 1),
            array('create_date', time()),
            array('create_by', 0),
            array('update_date', time()),
            array('update_by', 0),
            array('status', 0),
        );
        if (!$this->create($data)) {
            return false;
        } else {
            //消息类型文本
            //值为-1的项为用不到或暂时用不到
            $info_type_text_array = array(
                'Chat/Text' => 1,
                'Chat/File' => -1,
                'Chat/Image' => 2,
                'Chat/Audio' => 5,
                'Chat/Video' => -1,
                'Chat/Location' => -1,
                'Chat/NameCard' => -1,
                'Chat/TopicNameCard' => 3,
                'Chat/Link' => -1,
                'Chat/TopicLink' => -1,
                'Chat/Activity' => -1,
            );
            //根据文本内容切换为codedefine表中的数值
            $is_replace = false; //消息类型是否已被替换 如果没有匹配的值则报错
            foreach ($info_type_text_array as $key => $value) {
                $str = strstr($this->info_type, $key);
                if ($str) {
                    $this->info_type = $value;
                    $is_replace = true;
                    break;
                }
            }
            if (!$is_replace) {
                $this->error = "消息类型不存在";
                return false;
            }
            return true;
        }
    }

}
